package com.wang.tool.monitor.log;

import com.wang.tool.monitor.LinkLogUtil;
import com.wang.tool.monitor.core.LinkInfo;

import java.util.function.Consumer;

/**
 * @Description 日志api, 为LinkLogUtil提供日志适配能力
 * @Author shaopeng
 * @Date 2022/11/18
 * @Version 1.0
 * @see LinkLogUtil
 */
public interface LogApi {

    /**
     * 获取可用日志
     * 可适配配置中心实现动态日志开关
     *
     * @param loggerName 日志名 非空
     * @param linkInfo   当前链路信息 可能为空
     * @return 为空 代表 日志未开启/降级
     * @see LinkLogUtil#info
     * @see LinkLogUtil#INFO
     * @see LinkLogUtil#log
     * @see LinkLogUtil#LINK
     * @see LinkLogUtil#DIGEST
     * @see LinkLogUtil#TAG
     */
    Consumer<LogInfo> getLogger(String loggerName, LinkInfo linkInfo);

    /**
     * error 专属
     *
     * @param e   非空
     * @param errorCode 异常码 非空
     * @param logInfo 非空
     */
    void error(Throwable e, String errorCode, LogInfo logInfo);

}
